﻿let savePdf url fname = 
    let content = 
        url
        |> getImage
        |> Async.RunSynchronously
    File.WriteAllBytes(fname, content)

savePdf @"http://static.sse.com.cn/cs/zhs/scfw/gg/ssgs/2010-01-15/600173_2009_nzy.pdf" @"d:\temp.pdf"




#r "System.Web.dll"
open System.Web
open System.Text

let big5 = Encoding.GetEncoding("big5")

let downloadYearReport (query:string) = 
    let gb2312 = Encoding.GetEncoding("gb2312")
    let unicode = Encoding.Unicode
    
    let queryUrl (query:string) = 
        let qUni = query + "年报"
        let qGb  = gb2312.GetString(Encoding.Convert(unicode, gb2312, unicode.GetBytes(qUni)))
        @"http://static.sse.com.cn/sseportal/webapp/cm/keyWordSearch?KeyWord=" + System.Web.HttpUtility.UrlEncode(qGb, gb2312) + "&page=1&x=22&y=7"
    
    async {
        let! page = query |> queryUrl |> getImage 
        let searchPage = Encoding.Unicode.GetString(Encoding.Convert(gb2312, Encoding.Unicode, page))
        File.WriteAllText(@"d:\temp.txt", searchPage, gb2312)

        let str = query + "年报" + "</b></a>"
        let rec getPdfs (start:int) = 
            let idx = searchPage.IndexOf(str, start)
            if idx <> -1 then
                let pdfUrl = 
                    let i1 = searchPage.IndexOf("sse_popup('", idx - 100) + 11
                    let i2 = searchPage.IndexOf("')", i1)
                    "http://static.sse.com.cn/" + searchPage.Substring(i1, i2-i1)
                let year = 
                    let i3 = pdfUrl.IndexOf("_200")
                    pdfUrl.Substring(i3+1, 4)
                (pdfUrl, year) :: getPdfs (idx+1)
            else
                []
        let pdfs = getPdfs 0
        //printfn "%A" pdfs
        
        let reports = 
            pdfs
            |> List.map (fun (url, _) -> getImage url )
            |> Async.Parallel
            |> Async.RunSynchronously

        pdfs
        |> List.iteri (fun i (_, year) ->
            File.WriteAllBytes(@"d:\reports\"+query+year+".pdf", reports.[i]))
        
        return pdfs
    }





downloadYearReport "卧龙地产" |> Async.RunSynchronously

let names = "中体产业
大龙地产
卧龙地产
美都控股
格力地产
创兴置业
新湖中宝
鲁商置业
天津松江
云南城投
华业地产
万通地产
北京城建
天房发展
华发股份
首开股份
金地集团
东华实业
ST合臣
华丽家族
栖霞建设
万好万家
ST兴业
金丰投资
鼎立股份
丰华股份
ST海鸟
新黄浦
万业企业
城投控股
信达地产
天地源
中华企业
珠江实业
刚泰控股
多伦股份
凤凰股份
上海新梅
实达集团
苏州高新
华远地产
中茵股份
上实发展
东方银星
园城股份
运盛实业
西藏城投
新潮实业
京能置业
天业股份
世茂股份
ST中房
北辰实业
鑫茂科技
大港股份
南京高科
海泰发展
长春经开
空港股份
浦东金桥
外高桥
电子城
陆家嘴
金山开发
中炬高新
张江高科"

let namess = names.Split '\n'

namess |> Array.map downloadYearReport |> Async.Parallel |> Async.RunSynchronously


